プライベートサブネットで起動しているマネージドノードに適用した AWS-RunPatchBaseline が失敗する原因と対処法
困っていること
ドキュメント を参考に、以下のエンドポイントへの HTTPS (ポート 443) アウトバウンドトラフィックを許可しています。そのため、プライベートサブネットで起動しているマネージドノード(EC2インスタンス)が問題なく存在します。
- ssm.region.amazonaws.com
- ssmmessages.region.amazonaws.com
- ec2messages.region.amazonaws.com
しかしながら、Run Command を用いて AWS-RunPatchBaseline の適用を実施したところ、コマンドの説明とステータスより以下のエラーが出力され完了できません。 対処法を教えてください。
Unable to download payload: https://s3.dualstack.ap-northeast-1.amazonaws.com/aws-ssm-ap-northeast-1/patchbaselineoperations/linux/payloads/patch-baseline-operations-1.112.tar.gz.failed to run commands: exit status 156
どう対応すればいいの?
以下 2 点が不足している状況と考えられますのでご確認ください。
- S3 ゲートウェイエンドポイント
- EC2 インスタンスのセキュリティグループ アウトバウンドルール HTTP (ポート 80) 許可
インターネットに接続せずにインスタンス上でパッケージを更新およびインストールするには、S3 Amazon Virtual Private Cloud (Amazon VPC) ゲートウェイエンドポイントが必要です。
その作成される S3 ゲートウェイエンドポイント "com.amazonaws.ap-northeast-1.s3"
は、SSM Agent では HTTP (ポート 80) を利用して通信を行っています。
そのため、EC2 インスタンスのセキュリティグループのアウトバウンドルール HTTP (ポート 80) を許可する必要がございます。場合によっては VPC エンドポイントのセキュリティグループでも、インバウンドルール HTTP (ポート 80) の許可 と HTTPS (ポート 443) の許可をしているかご確認ください。
各種ご対応後、AWS-RunPatchBaseline が成功するかお試しください。
Amazon Linux リポジトリは Amazon シンプルストレージサービス (Amazon S3) バケットでホストされます。インターネットに接続せずにインスタンス上でパッケージを更新およびインストールするには、S3 Amazon Virtual Private Cloud (Amazon VPC) ゲートウェイエンドポイントを作成します。Amazon S3 VPC ゲートウェイエンドポイントには、リポジトリのバケットへのアクセスを許可するポリシーを含めます。次に、VPC エンドポイントをインスタンスサブネットのルーティングテーブルに関連付けます。
さまざまな Systems Manager のオペレーションを実行する過程で、AWS Systems Manager Agent (SSM Agent) は多数の Amazon Simple Storage Service (Amazon S3) バケットにアクセスします。これらの S3 バケットはパブリックにアクセス可能です。デフォルトで、SSM Agent は HTTP 呼び出しを使用してこれに接続します。